Memo1.Perform(EM_UNDO, 0, 0);
ButtonUndo.Enabled := Memo1.Perform(EM_CANUNDO, 0, 0);
ButtonUndo.Enabled := Memo1.CanUndo; // in Delphi 4 or higher
Memo1.Perform(EM_EMPTYUNDOBUFFER, 0, 0);
Memo1.ClearUndo; // in Delphi 4 or higher
